<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    function treeFilter(tree, func) {
      // 使用map复制一下节点，避免修改到原树
      return tree.map(function (node) {
        return JSON.parse(JSON.stringify(node));
      }).filter(function (node) {
        node.children = node.children && treeFilter(node.children, func);
        return func(node) || node.children && node.children.length;
      });
    }
    var data = [{
      id: 1,
      label: '一级 1',
      children: [{
        id: 4,
        label: '二级 1-1',
        children: [{
          id: 9,
          label: '三级 1-1-1'
        }, {
          id: 10,
          label: '三级 1-1-2'
        }]
      }]
    }, {
      id: 2,
      label: '一级 2',
      children: [{
        id: 5,
        label: '二级 2-1'
      }, {
        id: 6,
        label: '二级 2-2'
      }]
    }, {
      id: 3,
      label: '一级 3',
      children: [{
        id: 7,
        label: '二级 3-1'
      }, {
        id: 8,
        label: '二级 3-2'
      }]
    }];

    function func(node) {
      return node.label.indexOf('1-1-1') > -1;
    }
    var res = treeFilter(data, func)
    console.log(res,data)
  </script>
</body>

</html>